转载请注明出处 http://www.paraller.com
原文排版地址 点击跳转

This document is not completed and will be updated anytime.

Ebean使用maven配置的加载流程

Ebean相对于其他的ORM框架,显得更轻量级和简便,没有很多复杂的配置文件(mybatis)和难懂难驾驭的特性(hibernate),解放了程序员的开发效率,但也将很多特性隐藏了起来

准备工作

pom中依赖的jar包
<dependency>
    <groupId>org.avaje.ebeanorm</groupId>
    <artifactId>avaje-ebeanorm-spring</artifactId>
    <version>3.3.1</version>
    <exclusions>
        <exclusion>
            <artifactId>avaje-ebeanorm</artifactId>
            <groupId>org.avaje.ebeanorm</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.avaje.ebeanorm</groupId>
    <artifactId>avaje-ebeanorm-agent</artifactId>
    <version>4.5.3</version>
</dependency>
<dependency>
    <groupId>org.avaje</groupId>
    <artifactId>avaje-agentloader</artifactId>
    <version>2.1.1</version>
</dependency>
pom中依赖的插件
<plugin>
    <groupId>org.avaje.ebeanorm</groupId>
    <artifactId>avaje-ebeanorm-mavenenhancer</artifactId>
    <version>4.5.3</version>
    <executions>
        <execution>
            <id>process-classes</id>
            <phase>process-classes</phase>
            <configuration>
                <classSource>target/classes</classSource>
                <classDestination>target/classes</classDestination>
                <packages>cn.yeamoney.rest.domain.**,cn.yeamoney.rest.service.**</packages>
                <transformArgs>debug=1</transformArgs>
            </configuration>
            <goals>
                <goal>enhance</goal>
            </goals>
        </execution>
    </executions>
</plugin>
ebean的配置文件
#Created by JInto - www.guh-software.de
#Wed Jan 13 16:35:00 CST 2016
datasource.default=pg
datasource.pg.databaseDriver=org.postgresql.Driver
datasource.pg.databaseUrl=jdbc\:postgresql\://192.168.99.100\:5432/yea
datasource.pg.heartbeatsql=select 1
datasource.pg.password=
datasource.pg.username=postgres
ebean.ddl.generate=false
ebean.ddl.run=false
ebean.debug.lazyload=false
ebean.debug.sql=true
ebean.logging=all
ebean.logging.directory=logs
ebean.logging.iud=sql
ebean.logging.logfilesharing=all
ebean.logging.query=sql
ebean.logging.sqlquery=sql
ebean.logging.txnCommit=none

启动流程

增强插件

根据官网的提示 : http://ebean-orm.github.io/do...
我们可以知道,Ebean对Model的增强是在pom中使用avaje-ebeanorm-mavenenhancer插件实现的,在这个插件里面可以配置需要增强的包(package),在4.7.1以上的版本不需要指定,将会自动寻找需要增强的类

代理

使用avaje-ebeanorm-agent,引入代理将普通bean变成实体bean

代理加载器

使用avaje-agentloader,加载指定的代理,在启动运行jvm的时候装载代理,普通bean变成实体bean有极低的机率会失败

源码如下

import org.avaje.agentloader;
...
public void someApplicationBootupMethod() {
  // Load the agent into the running JVM process
  if (!AgentLoader.loadAgentFromClasspath("avaje-ebeanorm-agent","debug=1;packages=org.example.model.**")) {
    logger.info("avaje-ebeanorm-agent not found in classpath - not dynamically loaded");
  }
}
ServerConfig

在org.avaje.ebeanorm包中有一个类ServerConfig,专门保存Ebean的配置信息,
EbeanServerFactory会通过ServerConfig配置文件创建EbeanServer
ServerConfig的loadFromProperties方法会加载默认配置文件ebean.properties,当然也能指定想要加载的配置文件

注册属性

通过设置 ServerConfig.setRegister(true)可以开启注册功能,默认为true
开启该功能之后,就可以使用Ebean 单例实例化 EbeanServer

config.setName("pg");
EbeanServer server = EbeanServerFactory.create(config);
EbeanServer server = Ebean.getServer("pg");
默认的server
ServerConfig config = new ServerConfig();
config.setName("pg");
config.setDefaultServer(true);
EbeanServer server = EbeanServerFactory.create(config);
EbeanServer server = Ebean.getDefaultServer();
// 实现效果和上面的代码一样
EbeanServer server = Ebean.getServer(null);

结合spring使用

转载请注明出处 来源:paraller's blog


paraller
207 声望12 粉丝